/*
 * OrQuery.h
 *
 *  Created on: 2020年12月13日
 *      Author: san
 */

#ifndef ORQUERY_H_
#define ORQUERY_H_

#include <QueryResult.h.back>
#include <set>

#include "BinaryQuery.h"
#include "TextQuery.h"

class OrQuery: public BinaryQuery{
	using QueryResult = TextQuery::QueryResult;
	friend Query operator |(const Query &, const Query &);
	OrQuery(const Query &lhs, const Query &rhs): BinaryQuery(lhs, rhs, "|") {}
	QueryResult eval(const TextQuery&) override;  // 这里需要有定义才能实例化
};

inline Query operator |(const Query &lhs, const Query &rhs)
{
	return std::shared_ptr<Query_base>(new OrQuery(lhs, rhs));
}

#endif /* ORQUERY_H_ */
